package Demo1;

import java.util.Arrays;

//public class Test {
//
//    // 泛型方法用 <T> 在返回类型前声明
//    public static <T> void swap(T[] array, int i, int j) {
//        if (i >= 0 && i < array.length && j >= 0 && j < array.length) {
//            T temp = array[i];
//            array[i] = array[j];
//            array[j] = temp;
//        } else {
//            System.out.println("Invalid indices provided.");
//        }
//    }
//
//    public static void main(String[] args) {
//        Integer[] intArray = {1, 2, 3, 4, 5};
//        System.out.println("Original Integer Array: " + Arrays.toString(intArray));
//        swap(intArray, 0, 4);
//        System.out.println("After swapping: " + Arrays.toString(intArray));
//
//        String[] stringArray = {"apple", "banana", "cherry", "date"};
//        System.out.println("Original String Array: " + Arrays.toString(stringArray));
//        swap(stringArray, 1, 3);
//        System.out.println("After swapping: " + Arrays.toString(stringArray));
//    }
//}

public class Test {

    // 泛型方法使用 <T extends Comparable<T>>，这样可以确保元素是可比较的
    public static <T extends Comparable<T>> T findMax(T[] array) {
        if (array == null || array.length == 0) {
            return null;
        }

        T max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i].compareTo(max) > 0) {
                max = array[i];
            }
        }
        return max;
    }

    public static void main(String[] args) {
        Integer[] intArray = {1, 5, 3, 9, 2, 7};
        Integer maxInteger = findMax(intArray);
        System.out.println("Max Integer: " + maxInteger);

        Double[] doubleArray = {3.5, 2.1, 7.8, 4.2, 5.6};
        Double maxDouble = findMax(doubleArray);
        System.out.println("Max Double: " + maxDouble);

        String[] stringArray = {"apple", "banana", "cherry", "date"};
        String maxString = findMax(stringArray);
        System.out.println("Max String: " + maxString);
    }
}


